package com.fin.quant.app.asset.service;

import com.fin.quant.app.vo.*;
import com.fin.quant.rpc.common.Result;

/**
 * 投资组合应用服务接口
 */
public interface PortfolioService {

    /**
     * 获取投资组合列表
     */
    Result<PortfolioListResponse> getPortfolios(GetPortfoliosRequest request);

    /**
     * 创建投资组合
     */
    Result<PortfolioVO> createPortfolio(CreatePortfolioRequest request);

    /**
     * 获取投资组合详情
     */
    Result<PortfolioVO> getPortfolioDetail(Long portfolioId);

    /**
     * 更新投资组合
     */
    Result<PortfolioVO> updatePortfolio(Long portfolioId, CreatePortfolioRequest request);

    /**
     * 删除投资组合
     */
    Result<String> deletePortfolio(Long portfolioId);

    /**
     * 添加资产到组合
     */
    Result<String> addAssetToPortfolio(Long portfolioId, AddAssetToPortfolioRequest request);

    /**
     * 从组合中移除资产
     */
    Result<String> removeAssetFromPortfolio(Long portfolioId, Long assetId);

    /**
     * 更新组合中的资产
     */
    Result<String> updateAssetInPortfolio(Long portfolioId, Long assetId, AddAssetToPortfolioRequest request);

    /**
     * 对比投资组合
     */
    Result<PortfolioCompareVO> comparePortfolios(PortfolioCompareRequest request);
}
